how counting sort works